Blockiness is one of the main artifacts in images encoded by block based codecs. Accurately determining the blockiness level of an image or of image blocks is necessary to evaluate the image quality and consequently helps the processing of the image. As an example, when filtering an image, a stronger filter is applied on blocks with high blockiness levels while lower or no filter is applied on the other blocks, i.e. those with low blockiness levels.
Blockiness can be defined as the discontinuity at the boundaries of adjacent blocks in an image. Therefore, many known methods for determining a blockiness level operate at macroblocks' boundaries. These methods do not appropriately manage blockiness propagation. Indeed, due to motion compensation, blockiness artifacts are propagated from reference images into predicted images. Consequently, blockiness artifacts in the predicted images are not necessarily aligned with macroblock boundaries. In this case, known methods fail to determine an accurate blockiness level. In addition, such known methods do not accurately determine blockiness level when a deblocking filter is applied. Such a deblocking filter is for example used when encoding a video according to H.264 video coding standard. When a deblocking filter is applied, the discontinuity at the macroblock boundaries is decreased. In this case, known methods fail to determine accurate blockiness levels solely based on the difference at the boundaries. Finally, such known methods fail to accurately determine the blockiness level of images with large plain or complicated texture.